﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Com.queryzer2.Domain.Entities
{
    public class GEP_ANA_FASE
    {
        public class GEP_ANA_FASE_ID
        {
            public GEP_ANA_FASE_ID(string id_afa_cod_servizio, decimal id_afa_nro_fase)
            {
                this.id_afa_cod_servizio = id_afa_cod_servizio;
                this.id_afa_nro_fase = id_afa_nro_fase;
            }
            public readonly string id_afa_cod_servizio;
            public readonly decimal id_afa_nro_fase;

            public class EqualityComparer : IEqualityComparer<GEP_ANA_FASE_ID>
            {

                public bool Equals(GEP_ANA_FASE_ID x, GEP_ANA_FASE_ID y)
                {
                    return x.id_afa_cod_servizio.Equals(y.id_afa_cod_servizio) && x.id_afa_nro_fase == y.id_afa_nro_fase;
                }

                public int GetHashCode(GEP_ANA_FASE_ID x)
                {
                    return x.id_afa_cod_servizio.GetHashCode() * (int)x.id_afa_nro_fase;
                }

            }


        }

        public GEP_ANA_FASE() { }

        public GEP_ANA_FASE(string id_afa_cod_servizio, decimal id_afa_nro_fase)
        {
            this.gep_ana_serv = new GEP_ANA_SERV();
            this.gep_ana_serv.Id_ser_cod_servizio = id_afa_cod_servizio;
            this.id_afa_nro_fase = id_afa_nro_fase;
        }

        private GEP_ANA_SERV gep_ana_serv; //id
        private decimal id_afa_nro_fase;    //id
        private string afa_des_fase;
        private string afa_stampa;


        public GEP_ANA_FASE_ID Id
        {
            get { if (Id_afa_nro_fase == 0 || Id_afa_cod_servizio == null) return null; else return new GEP_ANA_FASE_ID(Id_afa_cod_servizio, Id_afa_nro_fase); }
        }

        public decimal Id_afa_nro_fase
        {
            get { return id_afa_nro_fase; }
            set { id_afa_nro_fase = value; }
        }
        public string Id_afa_cod_servizio
        {
            get { return gep_ana_serv.Id_ser_cod_servizio; }
        }
        public string Afa_stampa
        {
            get { return afa_stampa; }
            set { afa_stampa = value; }
        }

        public string Afa_des_fase
        {
            get { return afa_des_fase; }
            set { afa_des_fase = value; }
        }

        public GEP_ANA_SERV Gep_ana_serv
        {
            get { return this.gep_ana_serv; }
            set { this.gep_ana_serv = value; }
        }


    }
}
